Results 1 to 4 of 4

Thread: RCON Force Weapon on the Fly

  1. #1

    Default RCON Force Weapon on the Fly

    I use this script right now to force weapons on my server:


    MikeTorso.St to exec weapontrade.scr
    state RAISE_WEAPON
    {
    	movetype legs
    
    	entrycommands
    	{
    		viewmodelanim pullout
    		//exec player/player_raise.scr
    		exec global/weapontrade.scr
    		// just to make sure nothing funky's
    		// attached that shouldn't be.
    		correctweaponattachments
    	}


    weapontrade.scr to set the weapons allowed:
    if (int(getcvar(brats_weapons)) == 1)
    	{
    		if(self.dmteam == "allies")
    		{
    			local.m1_garand = "models/weapons/m1_garand.tik"
    			local.springfield = "models/weapons/springfield.tik"
    			local.thompsonsmg = "models/weapons/thompsonsmg.tik"
    			local.bar = "models/weapons/bar.tik"
    			local.bazooka = "models/weapons/bazooka.tik"
    
    			local.shotgun = "models/weapons/shotgun.tik"
    
    			local.kar98 = "models/weapons/kar98.tik"
    			local.kar98sniper = "models/weapons/kar98sniper.tik"
    			local.mp40 = "models/weapons/mp40.tik"
    			local.mp44 = "models/weapons/mp44.tik"
    			local.panzerschreck = "models/weapons/panzerschreck.tik"
    
    			waitframe
    			local.n = randomint 99999
    			self weaponcommand dual targetname ("w" + local.n)
    			local.weap = $("w" + local.n).model
    
    				if(local.weap == local.m1_garand)
    				{
    					self give local.weap
    					self use local.weap
    					waitframe
    					self give models/weapons/colt45.tik
    					self give models/weapons/m2frag_grenade.tik
    				}
    
    				if(local.weap == local.springfield)
    				{
    					self give local.weap
    					self use local.weap
    					waitframe
    					self give models/weapons/colt45.tik
    					self give models/weapons/m2frag_grenade.tik
    				}
    
    				if(local.weap == local.thompsonsmg)
    				{
    					self give local.weap
    					self use local.weap
    					waitframe
    					self give models/weapons/colt45.tik
    					self give models/weapons/m2frag_grenade.tik
    				}
    
    				if(local.weap == local.bar)
    				{
    					self give local.weap
    					self use local.weap
    					waitframe
    					self give models/weapons/colt45.tik
    					self give models/weapons/m2frag_grenade.tik
    				}
    
    				if(local.weap == local.bazooka)
    				{
    					self give local.weap
    					self use local.weap
    					waitframe
    					self give models/weapons/colt45.tik
    					self give models/weapons/m2frag_grenade.tik
    				}
    
    				if(local.weap == local.shotgun)
    				{
    					self give local.weap
    					self use local.weap
    					waitframe
    					self give models/weapons/colt45.tik
    					self give models/weapons/m2frag_grenade.tik
    				}
    		}
    		if(self.dmteam == "axis")
    		{
    			local.m1_garand = "models/weapons/m1_garand.tik"
    			local.springfield = "models/weapons/springfield.tik"
    			local.thompsonsmg = "models/weapons/thompsonsmg.tik"
    			local.bar = "models/weapons/bar.tik"
    			local.bazooka = "models/weapons/bazooka.tik"
    
    			local.shotgun = "models/weapons/shotgun.tik"
    
    			local.kar98 = "models/weapons/kar98.tik"
    			local.kar98sniper = "models/weapons/kar98sniper.tik"
    			local.mp40 = "models/weapons/mp40.tik"
    			local.mp44 = "models/weapons/mp44.tik"
    			local.panzerschreck = "models/weapons/panzerschreck.tik"
    
    			waitframe
    			local.n = randomint 99999
    			self weaponcommand dual targetname ("w" + local.n)
    			local.weap = $("w" + local.n).model
    
    				if(local.weap == local.kar98)
    				{
    					self give local.weap
    					self use local.weap
    					waitframe
    					self give models/weapons/p38.tik
    					self give models/weapons/steilhandgranate.tik
    				}
    
    				if(local.weap == local.kar98sniper)
    				{
    					self give local.weap
    					self use local.weap
    					waitframe
    					self give models/weapons/p38.tik
    					self give models/weapons/steilhandgranate.tik
    				}
    
    				if(local.weap == local.mp40)
    				{
    					self give local.weap
    					self use local.weap
    					waitframe
    					self give models/weapons/p38.tik
    					self give models/weapons/steilhandgranate.tik
    				}
    
    				if(local.weap == local.mp44)
    				{
    					self give local.weap
    					self use local.weap
    					waitframe
    					self give models/weapons/p38.tik
    					self give models/weapons/steilhandgranate.tik
    				}
    
    				if(local.weap == local.panzerschreck)
    				{
    					self take local.weap
    					self give local.bazooka
    					self use local.bazooka
    					waitframe
    					self give models/weapons/p38.tik
    					self give models/weapons/steilhandgranate.tik
    				}
    
    				if(local.weap == local.shotgun)
    				{
    					self give local.weap
    					self use local.weap
    					waitframe
    					self give models/weapons/p38.tik
    					self give models/weapons/steilhandgranate.tik
    				}
    		}
    
    		if(self.dmteam == "spectator")
    		{
    			self takeall
    		}
    	}


    and there are 10 different versions of the above script to give different guns based on the weapon you pick from the menu. Right now, I have to do an rcon restart for the changes to take effect. I'd like the changes to happen as soon as I change the "brats_weapons" variable via console. Also if there's any way to clean that script up, it might be worth it.. It doesn't give me any issues as is, but I'm sure Double will see a way to make it more efficient ;P

  2. #2

    Default

    You need to put the script running not from the states and put a while loop to continue to check the variable if have change.

  3. #3

    Default

    I'll try this right now...

    exec from dmprecache and do the loop something like:

    theloop:
    while (1)
    {
    if (int(getcvar(brats_weapons)) == 1)
    	{
    ...
    }
    if (int(getcvar(brats_weapons)) == 2)
    	{
    ...
    }
    ...
    wait 5
    }
    end


    Edit:

    It works when it's looped (to give the player the weapon immediately without the need to restart the map), but when I exec from dmprecache the script does nothing, when I exec from miketorso.st it works fine... Only issue is, for example, if I force a rocket sometimes when scrolling to your next weapon (pistol or nade) the player will put the rocket away then pull the rocket back out. I think it's because the player is switching weapons when the loop is acting and the " self use local.weap" part of the script keeps telling the player to use the main weapon (rocket in this example). Is there a way around that?
    Last edited by [cB]SplatterGuts; August 2nd, 2016 at 02:38 PM.

  4. #4

    Default

    I forgot to say you need to put in a for loop to check the player because self was for the states.

    This way will work:
    local.m1_garand = "models/weapons/m1_garand.tik"
    local.springfield = "models/weapons/springfield.tik"
    local.thompsonsmg = "models/weapons/thompsonsmg.tik"
    local.bar = "models/weapons/bar.tik"
    local.bazooka = "models/weapons/bazooka.tik"
    local.shotgun = "models/weapons/shotgun.tik"
    local.kar98 = "models/weapons/kar98.tik"
    local.kar98sniper = "models/weapons/kar98sniper.tik"
    local.mp40 = "models/weapons/mp40.tik"
    local.mp44 = "models/weapons/mp44.tik"
    local.panzerschreck = "models/weapons/panzerschreck.tik"
    
    
    
    while(1)
    {
    wait 0.02
    
    	for(local.i = 1;local.i <= $player.size;local.i++)
    	{
    
    	local.player = $player[local.i]
    
    		waitframe
    		local.n = randomint 99999
    		local.player weaponcommand dual targetname ("w" + local.n)
    		local.weap = $("w" + local.n).model
    
    		if (int(getcvar(brats_weapons)) == 1)
    		{
    			if(local.player.dmteam == "allies" && local.player.weapon != 1)
    			{
    
    				switch(local.weap)
    				{
    				case local.m1_garand:
    				case local.springfield:
    				case local.thompsonsmg:
    				case local.bar:
    				case local.bazooka:
    				case local.shotgun:
    										local.player give local.weap
    										local.player use local.weap
    										waitframe
    										local.player give models/weapons/colt45.tik
    										local.player give models/weapons/m2frag_grenade.tik
    										local.player.weapon = 1
    										break
    				}
    
    
    		}
    		if(local.player.dmteam == "axis" && local.player.weapon != 2)
    		{
    
    				switch(local.weap)
    				{
    				case local.kar98:
    				case local.kar98sniper:
    				case local.mp40:
    				case local.mp44:
    				case local.panzerschreck:
    				case local.shotgun:
    											local.player give local.weap
    											local.player use local.weap
    											waitframe
    											local.player give models/weapons/p38.tik
    											local.player give models/weapons/steilhandgranate.tik
    											local.player.weapon = 2
    											break
    				}
    		}
    
    		if(local.player.dmteam == "spectator")
    		{
    			local.player takeall
    		}
    	}
    }
    Last edited by DoubleKill; August 3rd, 2016 at 05:31 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •